#ifndef __PAGELIB_H__
#define __PAGELIB_H__

#include "../../include/pagelib/DirScanner.h"
#include <unordered_map>
#include <unordered_set>
#include <map>
struct RSSItem
{
    RSSItem() = default;  // 默认构造函数
    RSSItem(const string& title,const string& link,const string& description,const string& content)
    :_title(title)
    ,_link(link)
    ,_description(description)
    ,_content(content)
    {

    }

    ~RSSItem()
    {

    }

    string _title;
    string _link;
    string _description;
    string _content;
};

class PageLib
{
public:
    PageLib(const string& cropus);
    ~PageLib();

    void createPageLib();
    void storePageLibToFile();

private:
    // 创建网页库
    void createWebLib();
    // 创建网页偏移量库
    void createOffsetLib();
    // 创建倒排索引库
    void createInvertIndexLib();

    //存储网页库
    void storeWebPageLib();
    // 存储网页偏移库
    void storeOffsetLib();
    //存储倒排索引库
    void storeInvertIndexLib();

private:
    // 读取网页内容，进行清洗
    void readFileClean(const string& filename);

    // 清洗文本内容的函数
    string cleanText(const string& text);

    unordered_set<string> readStopWord(const string& filename);

    // 网页去重
    void simHash();

    // 创建格式化网页
    void createFormatWebPage();

private:
    DirScanner& _dirScanner;   // 目录扫描器
    vector<RSSItem> _rss;     // 存放的网页相关信息
    vector<string> _pages;   // 存放去重且格式化后的网页
    map<int,pair<int,int>> _offsetLib;  // 网页偏移库
    unordered_map<string,vector<pair<int,double>>> _invertIndexLib;  // 倒排索引库
};

#endif